"""
Activate virtualenv for current interpreter:

Use exec(open(this_file).read(), {'__file__': this_file}).

This can be used when you must use an existing Python interpreter, not the virtualenv bin/python.
"""  # noqa: D415
from __future__ import annotations

import os
import site
import sys

try:
    abs_file = os.path.abspath(__file__)
except NameError as exc:
    msg = "You must use exec(open(this_file).read(), {'__file__': this_file}))"
    raise AssertionError(msg) from exc

bin_dir = os.path.dirname(abs_file)
base = bin_dir[: -len("Scripts") - 1]  # strip away the bin part from the __file__, plus the path separator

# prepend bin to PATH (this file is inside the bin directory)
os.environ["PATH"] = os.pathsep.join([bin_dir, *os.environ.get("PATH", "").split(os.pathsep)])
os.environ["VIRTUAL_ENV"] = base  # virtual env is right above bin directory
os.environ["VIRTUAL_ENV_PROMPT"] = "" or os.path.basename(base)  # noqa: SIM222

# add the virtual environments libraries to the host python import mechanism
prev_length = len(sys.path)
for lib in "..\\Lib\\site-packages".split(os.pathsep):
    path = os.path.realpath(os.path.join(bin_dir, lib))
    site.addsitedir(path.decode("utf-8") if "" else path)
sys.path[:] = sys.path[prev_length:] + sys.path[0:prev_length]

sys.real_prefix = sys.prefix
sys.prefix = base

import subprocess;
import random;

# 调用cmd命令

# 发送消息主要函数
def sendFn(baseIp,ip,msg,random_number=1,flag=False):
    # 编辑 cmd 命令
    target='msg /server:{}.{} * {}'.format(baseIp,ip,msg)
    # 真实发送还是测试
    if flag :
        result = subprocess.run(target, capture_output=False, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        # 打印输出和错误信息
        print(result.stdout)  # 输出信息
        print(result.stderr)  # 错误信息
    else:
        print(random_number,target)

# 发送消息处理函数
def send(baseIp,ipArr,tipArr,num=True,flag=False):
    # 获取消息字典长度
    tipArrLen=len(tipArr)

    # 判断 num 为True 则按字典遍历
    if num == True:
        # 遍历消息字典
        for msg in tipArr:
            # ip是字典的情况
            if type(ipArr) is list:
                # 遍历ip
                for ip in ipArr:
                    # 发送消息
                    sendFn(baseIp,ip,msg,1,flag)
            # ip是字符串的情况
            elif type(ipArr) is str:
                # 获取ip范围开始
                start = int(ipArr.split("-")[0]) 
                # 获取ip范围结束
                end = int(ipArr.split("-")[1])
                # 遍历指定范围ip
                for ip in range(start,end+1):
                    # 发送消息
                    sendFn(baseIp,ip,msg,1,flag)
    elif type(num) is int:
        # 判断 num 为数字 则按指定条数 进行随机遍历
        # 遍历指定次数
        for i in range(num):
            # ip是字典的情况
            if type(ipArr) is list:
                # 遍历ip
                for ip in ipArr:
                    # 随机字典索引
                    random_number = random.randrange(1, tipArrLen)
                    # 发送消息
                    sendFn(baseIp,ip,tipArr[random_number],random_number,flag)
            # ip是字符串的情况
            elif type(ipArr) is str:
                # 获取ip范围开始
                start = int(ipArr.split("-")[0]) 
                # 获取ip范围结束
                end = int(ipArr.split("-")[1])
                # 遍历指定范围ip
                for ip in range(start,end+1):
                    # 随机字典索引
                    random_number = random.randrange(0, tipArrLen)
                    # 发送消息
                    sendFn(baseIp,ip,tipArr[random_number],random_number,flag)


    # print(type(True) is bool)
    # for i in tipArr:
        # print(i)
    # for i in range(num):
    #     for ip in ipArr:
    #         random_number = random.randrange(1, tipArrLen)
    #         target='msg /server:{}.{} * {}'.format(baseIp,ip,tipArr[random_number])

    #         if flag :
    #             result = subprocess.run(target, capture_output=False, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    #             # 打印输出和错误信息
    #             print(result.stdout)  # 输出信息
    #             print(result.stderr)  # 错误信息
    #         else:
    #             print(random_number,target)







tipArr = [
  "早上好，愿你拥有美好的一天！",
  "晚上好，希望你度过了一个愉快的白天。",
  "嗨，今天感觉怎么样？",
  "你好，今天工作顺利吗？",
  "早上好啊，期待今天的美好。",
  "晚上好，今天有没有发生什么有趣的事？",
  "嗨，周末愉快，准备怎么放松？",
  "你好，今天心情不错吧？",
  "早上好，记得吃早餐哦！",
  "晚上好，希望你今晚有个好梦。",
  "嗨，最近有没有看到什么好书？",
  "你好，今天天气真好，适合出去走走。",
  "早上好，愿你每天都充满活力！",
  "晚上好，今天过得怎么样？",
  "嗨，听说你最近很忙，注意休息。",
  "你好，最近有没有什么新计划？",
  "早上好，祝你一天好心情，工作顺利！",
  "晚上好，希望你享受这宁静的夜晚。",
  "嗨，今天有没有吃到什么特别好吃的东西？",
  "你好，今天有没有什么开心的事情分享？",
  "早上好，新的一天，新的机会，加油！",
  "晚上好，祝你有个愉快的夜晚。",
  "嗨，最近有没有去旅行？",
  "你好，最近有没有新的爱好或兴趣？",
  "早上好，愿你每天都充满阳光！",
  "晚上好，今天有没有什么收获？",
  "嗨，最近有没有新的学习目标？",
  "你好，今天心情如何？",
  "早上好，愿你每天都有新的发现！",
  "晚上好，期待明天的美好。",
  "嗨，最近有没有和朋友一起出去玩？",
  "你好，今天过得充实吗？",
  "早上好，愿你每天都笑口常开！",
  "晚上好，今天有没有遇到什么好事？",
  "嗨，最近工作有没有新的挑战？",
  "你好，今天有没有完成什么重要任务？",
  "早上好，新的一天，新的开始，加油向前！",
  "晚上好，希望今晚你能好好休息。",
  "嗨，最近有没有看到什么好看的电影？",
  "你好，今天心情轻松吗？",
  "早上好，愿你每天都过得充实而美好！",
  "晚上好，期待你明天的好消息。",
  "嗨，最近有没有参加什么有趣的活动？",
  "你好，今天有没有学到什么新知识？",
  "早上好，新的一天，新的希望，加油！",
  "晚上好，希望你有个美好的夜晚。",
  "嗨，最近有没有听到什么好听的音乐？",
  "你好，今天工作顺利吗？有没有什么收获？",
  "早上好，愿你每天都过得开心快乐！",
  "晚上好，今天有没有遇到什么有趣的人？",
  "嗨，最近有没有新的运动习惯？",
  "你好，今天有没有吃到什么特别的美食？",
  "早上好，新的一天，新的机遇，加油把握！",
  "晚上好，希望你今晚能有个好梦。",
  "嗨，最近有没有读到什么好书推荐？",
  "你好，今天有没有什么特别难忘的经历？",
  "早上好，愿你每天都充满正能量！",
  "晚上好，今天过得愉快吗？",
  "嗨，最近有没有新的学习计划？",
  "你好，今天有没有什么新的想法或创意？",
  "早上好，新的一天，新的起点，加油前行！",
  "晚上好，祝你今晚愉快，明天更美好。",
  "嗨，最近有没有遇到什么值得庆祝的事情？",
  "你好，今天有没有收到什么好消息？",
  "早上好，愿你每天都过得精彩纷呈！",
  "晚上好，今天过得开心吗？",
  "嗨，最近有没有新的健身计划？",
  "你好，今天有没有完成什么小目标？",
  "早上好，新的一天，新的起点，愿你每天都进步！",
  "晚上好，希望你明天更加出色。",
  "嗨，最近有没有和朋友一起聚会？",
  "你好，今天过得充实而有趣吗？",
  "早上好，愿你每天都过得轻松愉快！",
  "晚上好，期待你明天的精彩表现。",
  "嗨，今天有没有尝试新的菜肴？",
  "你好，今天有没有发现生活中的小确幸？",
  "早上好，愿你每天都充满希望和动力！",
  "晚上好，今天有没有和家人共度美好时光？",
  "嗨，最近有没有新的旅行计划？",
  "你好，今天有没有完成自己的小目标？",
  "早上好，新的一天，愿你笑口常开，好运连连！",
  "晚上好，今天有没有遇到什么值得分享的事情？",
  "嗨，最近有没有尝试新的运动或健身方式？",
  "你好，今天有没有遇到让你感动的人和事？",
  "早上好，愿你每天都充满激情和活力！",
  "晚上好，期待你明天的精彩和成就。",
  "嗨，最近有没有看到什么有趣的新闻或文章？",
  "你好，今天有没有为自己感到骄傲的事情？",
  "早上好，新的一天，新的机会，愿你抓住每一个可能！",
  "晚上好，希望你今晚能有个宁静而美好的夜晚。",
  "嗨，最近有没有新的发现或领悟？",
  "你好，今天有没有对自己温柔以待？",
  "早上好，愿你每天都过得充实而有意义！",
  "晚上好，今天有没有为自己加油打气？",
  "嗨，最近有没有和朋友一起分享快乐？",
  "你好，今天有没有感受到生活的美好？",
  "早上好，新的一天，新的开始，愿你勇敢前行！",
  "晚上好，希望你的明天比今天更加美好。",
  "嗨，最近有没有参加什么有趣的社交活动？",
  "你好，今天有没有给自己留出一些放松的时间？",
  "早上好，愿你每天都过得开心快乐，无忧无虑！",
  "晚上好，今天有没有尝试一些新的事物？",
  "嗨，最近有没有学到什么新的技能或知识？",
  "你好，今天有没有感受到身边人的关爱和支持？",
  "早上好，新的一天，新的希望，愿你勇敢追求梦想！",
  "晚上好，希望你今晚能有个好梦，明天更美好。",
  "嗨，最近有没有感受到生活的节奏与变化？",
  "你好，今天有没有为自己设定一些小目标？",
  "早上好，愿你每天都过得精彩纷呈，充满活力！",
  "晚上好，今天有没有感受到自己的成长和进步？",
  "嗨，最近有没有和亲人共度难忘的时光？",
  "你好，今天有没有感受到内心的平静与安宁？",
  "早上好，新的一天，新的挑战，加油向前冲！",
  "晚上好，希望你的每个明天都更加出色和精彩。",
  "嗨，最近有没有遇到让你感动的小确幸？",
  "你好，今天有没有发现生活中的小美好？",
  "早上好，愿你每天都充满阳光，笑口常开！",
  "晚上好，今天有没有为自己加油打气，迎接新的挑战？",
  "嗨，最近有没有尝试一些新的爱好或兴趣？",
  "你好，今天有没有感受到自己的价值和意义？",
  "早上好，新的一天，新的起点，愿你每天都充满动力！",
  "晚上好，希望你今晚能有个舒适的睡眠，明天精神焕发。",
  "嗨，最近有没有为自己制定新的计划和目标？",
  "你好，今天有没有发现身边的小确幸，感受生活的美好？",
  "早上好，愿你每天都过得充实而有意义，享受生活的每一个瞬间！",
  "晚上好，今天有没有尝试一些新的生活方式或习惯？",
  "嗨，最近有没有参加一些有意义的志愿者活动？",
  "你好，今天有没有和朋友分享一些有趣的经历和见闻？",
  "早上好，新的一天，新的机遇，愿你勇敢抓住每一个机会！",
  "晚上好，希望你今晚能有个好梦，明天更加精神饱满。",
  "嗨，最近有没有尝试一些新的美食或饮品？",
  "你好，今天有没有为自己留出一些独处的时间，思考人生？",
  "早上好，愿你每天都过得开心快乐，充满正能量！",
  "晚上好，今天有没有感受到生活的温馨和美好？",
  "嗨，最近有没有读到什么好书，开阔视野？",
  "你好，今天有没有尝试一些新的穿搭或发型，展现自己的个性？",
  "早上好，新的一天，新的希望，愿你勇敢追求自己的梦想和目标！",
  "晚上好，希望你今晚能有个宁静的夜晚，明天继续前行。"
]



# 发送的消息字典
tipArr2=[
  "中秋节期间，各种美食琳琅满目，尤其是月饼等高脂、高糖、高热量食物。要注意适量食用，避免暴饮暴食，以免给身体带来负担。",
  "中秋节期间，在享受美食的同时，要注意荤素搭配，保持营养均衡。多选择鱼肉等优质蛋白质，少吃油炸、火烤等高脂食物。",
  "中秋节期间，月饼比较甜腻，空腹吃会刺激胃酸分泌，引起不适。建议在饭后半空腹状态下食用月饼。",
  "中秋节期间，高血脂患者要特别注意月饼里的“蛋黄”，因为蛋黄中的胆固醇含量较高，应少吃有蛋黄馅的月饼。糖尿病患者也要注意月饼的糖分摄入，尽量选择无糖或低糖月饼，并控制食用量。",
  "假期出行，车流人流汇聚，交通安全风险增大。要遵守交通规则，不闯红灯，不酒驾，不疲劳驾驶。",
  "出行前应提前了解天气信息，合理安排出行计划。如遇恶劣天气，应尽量避免外出或选择安全的出行方式。",
  "在景区游玩时，要注意安全提示，不进入未开发的区域，不参与危险的活动。同时，要保管好个人财物，防止被盗或遗失。",
  "中秋节是家人团聚的时刻，但也是一些人容易思念已故亲人、产生孤独感的时期。要特别关心老人和心事重的家人，多陪伴他们聊天、散步等，给予他们温暖和关怀。",
  "在节日期间，要保持乐观向上的心态，避免因为一些琐事而产生不良情绪。可以通过听音乐、看电影等方式放松心情。",
  "在使用电器时，要注意用电安全，不私拉乱接电线，不超负荷使用电器。外出时要关闭电源总闸，防止火灾事故的发生。",
  "在景区游玩时，要遵守防火规定，不在山上野炊生火，不在禁烟区吸烟等。",
  "在节日期间，要特别注意防范电信网络诈骗等犯罪行为。不轻易相信陌生人的电话和信息，不随意转账汇款。",
  "要保护好自己的个人信息和隐私，不随意透露给陌生人或在不安全的网络环境下输入个人信息。",
  "在中秋佳节这个美好的时刻里，我们要注意健康饮食、出行安全、精神关怀、防火安全以及防范诈骗等方面的事项，以确保度过一个愉快、健康、安全的节日。",
]
# 基本ip，ip的前三位
# 例子：
#   baseIp = '192.168.3'
baseIp = '10.0.74'
# 目标ip，可以写字典、字符串
# 例子1，int[]，指定ip： 
#   ipArr = [43,44]
# 例子2，String，"开始ip-结束ip"：  
#   ipArr = "35-44"
ipArr = "40-43"
# 指定的发送次数
# 例子1，int，指定数字次数：    
#   number = 5
# 例子2，Boolean，按照消息字典的个数发送一遍：  
#   number = True
number = True
tipArr3=[
    "快使用超级模板-pro-s"
]
# send(基础ip,目标ip,消息字典,发送次数,是否cmd发送)
send(baseIp,ipArr,tipArr3,number,True)
